package com.sistemagestion.productos.view;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Filter;
import android.widget.TextView;

import com.sistemagestion.R;
import com.sistemagestion.Entities.Producto;

public class ProductoAutoCompleteAdapter extends ArrayAdapter<Producto> {

	private List<Producto> _productos, allproductos;
	private int res;

	public ProductoAutoCompleteAdapter(Context context, int textViewResourceId,
			List<Producto> objects) {
		super(context, textViewResourceId, objects);
		this.res = textViewResourceId;
		this._productos = objects;
		this.allproductos = objects;
	}

	@Override
	public void add(Producto object) {
		_productos.add(object);
		notifyDataSetChanged();
	}

	@Override
	public int getCount() {
		if (_productos == null)
			return 0;
		return _productos.size();
	}

	@Override
	public Filter getFilter() {
		return new ProductoFilter();
	}

	@Override
	public Producto getItem(int position) {
		return _productos.get(position);
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {

		LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		TextView txtCodigo = (TextView)inflater.inflate(res, null);
		txtCodigo.setText(getItem(position).getNombre());
		return txtCodigo;
//		ViewHolder viewholder;
//		if (convertView == null) {
//			viewholder = new ViewHolder();
//			LayoutInflater inflater = (LayoutInflater) getContext()
//					.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//			viewholder.txtCodigo = (TextView) inflater.inflate(res, null);
//			convertView.setTag(viewholder);
//		} else {
//			viewholder = (ViewHolder) convertView.getTag();
//		}
//		viewholder.txtCodigo.setText(getItem(position).getNombre());
//		return convertView;
	}

//	private static class ViewHolder {
//
//		TextView txtCodigo;
//	}

	public class ProductoFilter extends Filter {

		@Override
		protected FilterResults performFiltering(CharSequence constraint) {

			constraint = constraint.toString().toLowerCase();
			FilterResults filterResults = new FilterResults();
			List<Producto> productosFiltrados = new ArrayList<Producto>();
			if (constraint != null && constraint.length() > 0) {
				for (Producto prod : allproductos) {
					String text = prod.toString().toLowerCase();
					if (text.contains(constraint)) {
						productosFiltrados.add(prod);
					}
					filterResults.count = productosFiltrados.size();
					filterResults.values = productosFiltrados;
				}
			} else {
				filterResults.count = allproductos.size();
				filterResults.values = allproductos;
			}
			return filterResults;
		}

		@Override
		protected void publishResults(CharSequence constraint,
				FilterResults results) {
			_productos = (List<Producto>) results.values;
			notifyDataSetChanged();

		}

	}
}
